﻿[
	(= (= 1 1) true)
	(= (= true true) true)
	(= (= false true) false)
	(= (= "abc" "abc") true)
	(= (= "abc1" "abc2") false)
	(and (not (= 1 2)) (not (> 1 2)))
	(!= 1 2)
	(not false)
	(= (not true) false)
	(and (= 1 1) (= 2 2))
	(= (and (= 1 1) (= 1 2)) false)
	(= (and (= 1 2) (= 1 2)) false)
	(= (and (= 1 2) (= 1 1)) false)
	(or true true)
	(or false true)
	(or true false)
	(= (or false false) false)
	(= (+ 1 1) 2)
	(seq (define n (+ 1 1)) (= n 2))
	(= (- 3 1) 2)
	(= (/ 3 2) 1)
	(= (/ 3 2.0) 1.5)
	(> 3 2.0)
	(not (> 3 4))
	(>= 3 2.0)
	(not (>= 3 4))
	(not (< 3 2.0))
	(< 3 4)
	(not (<= 3 2.0))
	(<= 3 4)
	(= (* 3 2.0) 6.0)
	(= (* 3 4) 12)
	(= (print "test") void)
	(= (seq (define 你好 "世界")
		(print 你好)

		(print (*(+ 2 3) 4))
		(print (+ 2 3))
		(print 42 "ok" true)) void)
	(seq (define f
		(fun (x y)
		(- x y))) (and (= (f 3 2) 1) (= (f :x 3 :y 2) 1) (= (f :y 3 :x 2) -1)))
	(seq (define fact
	  (fun ([x Int] [-> Int])
		(if (= x 0) 1 (* x (fact (- x 1))))))
		(= (fact 5) 120))
	(seq (define even
		  (fun ([x Int] [-> Bool])
			(if (= x 0)
				true
				(if (= x 1)
					false
					(odd (- x 1))))))

		(define odd
		  (fun ([x Int] [-> Bool])
			(if (= x 0)
				false
				(if (= x 1)
					true
					(even (- x 1)))))) 
		(and (even 10)
			(not (even 11))
			(not (odd 10))
			(odd 11)))
	(seq (define a [1 2 3]) (= a.1 2))
	(seq (define a [1 [11 22 33] 3]) (= a.1.1 22))
]
